The process of identifying the underlying causes of untestable faults in logic circuits, such as circuit boards and in particular integrated circuits, has traditionally presented a difficult problem. An untestable fault can result from a number of circuit conditions, such as an inability to exercise a portion of a circuit with a circuit test system, and an inability to propagate a fault indication from the source of the fault to a point in the circuit where the fault can be detected. The wide diversity of possible circuit configurations presents a complex problem for test tool developers, since no single approach will work in all cases. The result is a notable lack of fault analysis tools within circuit design systems and, as a result, the user is typically faced with manually attempting to identify testability problems. This requires both the identification of relevant areas of a complex logic design (relevant to an untestable fault) and the elimination of non-relevant areas. As can be appreciated, this can be an extremely labor-intensive process that is prone to error.
One significant contributor to the existence of untestable faults are logical redundancies in the circuit design. Although advances in logic synthesis techniques have somewhat alleviated this problem, there continues to be a need to address untestable faults in post-synthesis circuits.
A primary goal of fault analysis is to facilitate the identification and removal of logical redundancies. The presence of redundancies can result in product failures in the presence of multiple stuck-at faults. A desirable goal is thus to identify and eliminate redundancies. Several advantages that result include, but are not limited to, a reduction in silicon area requirements and a performance improvement, especially in critical timing areas.
In addition to logical redundancies, testability problems can arise from the presence of tied logic, which may prevent a fault from propagating to a point where it can be detected, and from observability constraints that may exist in the circuit.